

#ifndef UC_GECLIP2D_H
#define UC_GECLIP2D_H

#include "zadesk.h"
#include "assert.h"
#include "zgeent2d.h"
#include "zgepnt2d.h"
#include "zgept2dar.h"
#include "zgegbl.h"
#include "zgeintarr.h"
#pragma pack (push, 8)

class UcGeImpClipBoundary2d;

class
GE_DLLEXPIMPORT
UcGeClipBoundary2d : public UcGeEntity2d
{
public:

    UcGeClipBoundary2d();

    UcGeClipBoundary2d(const UcGePoint2d& cornerA, const UcGePoint2d& cornerB);

    UcGeClipBoundary2d(const UcGePoint2dArray& clipBoundary);

	UcGeClipBoundary2d (const UcGeClipBoundary2d& src);

	UcGe::ClipError		set(const UcGePoint2d& cornerA, const UcGePoint2d& cornerB);

    UcGe::ClipError		set(const UcGePoint2dArray& clipBoundary);

    UcGe::ClipError		clipPolygon(const UcGePoint2dArray& rawVertices, 
                                    UcGePoint2dArray& clippedVertices,
                                    UcGe::ClipCondition& clipCondition,
                                    UcGeIntArray* pClippedSegmentSourceLabel = 0) const;

    UcGe::ClipError		clipPolyline(const UcGePoint2dArray& rawVertices, 
                                     UcGePoint2dArray& clippedVertices,
                                     UcGe::ClipCondition& clipCondition,
                                     UcGeIntArray* pClippedSegmentSourceLabel = 0) const;

    UcGeClipBoundary2d& operator = (const UcGeClipBoundary2d& crvInt);
};

#pragma pack (pop)
#endif
